import simple_http_server.server as server
from simple_http_server import request_map
from simple_http_server import JSONBody
import pyautogui as gui
import pyperclip as clip
from time import sleep

@request_map("/", method="GET")
def doit():
    return "GET / OK！"

@request_map("/msg", method="POST") # 接收来自调用方的POST请求，请求需包含to目标会话编号，content消息内容
def msg_post(data=JSONBody()):
    to = data['to'] #  data=JSONBody() "gj099"
    content = data['content'] # "消息内容"
    clip.copy(content) # 消息内容
    gui.moveTo(10, 280, duration=0.61) # 移动到任务栏图标
    gui.click(button='left') # 左键点击
    gui.moveTo(450, 65, duration=0.61) # 移动到微信搜索按钮（前提是在前三个标签页上）
    gui.click(button='left') # 点击搜索按钮
    gui.moveRel(-15, 0, duration=0.5) # 稍微左移，延时的同时确保打开搜索框
    gui.click(button='left') # 双保险，再次点击（正常是点到了搜索框，系统反应慢的话会再点一次搜索按钮）
    # 以下实现输入 #数字# ，因为#要用shift输入，所有稍微麻烦. 用hold方式
    ### 注意系统应该处于英文输入法下
    sleep(0.5)
    with gui.hold('shift'):
        gui.press(['3'])
    gui.write(to, interval=0.2)
    with gui.hold('shift'):
        gui.press(['3'])
    gui.moveRel(0, 130, duration=0.5) # 下移到第一个搜索结果
    gui.click(button='left') # 点击首个目标会话
    sleep(0.1)
    gui.moveRel(-100, 560, duration=0.5) # 下移到=====
    gui.click(button='left') # 点击会话输入框
    
    sleep(0.1)
    # clip.paste() # 粘贴内容，用pyperclip粘贴无效 
    gui.hotkey('ctrl', 'v') # 用快捷键粘贴剪贴板内容(发送消息)

    gui.moveRel(175, 0, duration=0.5) # 右移到发送按钮
    gui.click(button='left') # 点击发送按钮
    sleep(0.5) 
    gui.moveTo(100, 100, duration=0.3) # 移动到左上角返回按钮
    gui.click(button='left')
    sleep(0.5) # 稍作等待页面切换回搜索页
    gui.moveRel(400, 0, duration=0.3) # 移动到右上角取消搜索按钮
    gui.click(button='left') # 点击取消
    # 此时应该回到主页面了
    # TODO 后续再做进一步的验证
    return 'ok 33'

def main(*args):
    server.start()

if __name__ == "__main__":
    main()
